import Vue from 'vue'
import dayjs from 'dayjs'

/**
 * 10000 => "10,000"
 * 三位逗号分隔
 */
Vue.filter('toThousandFilter', num => {
  return (+num || 0)
    .toString()
    .replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
})

/**
 * 时间格式化
 */
Vue.filter('dateFormat', (date, format = 'YYYY-MM-DD HH:mm:ss') => {
  if (!date) {
    return
  }
  return dayjs(date).format(format)
})

/**
 * 返回指定单位下两个日期时间之间的差异
 */
Vue.filter('dateDifference', (date1, date2) => {
  if (!date1) {
    date1 = dayjs()
    if (!date2) {
      return
    }
  }

  // 相差毫秒数
  let date3 = dayjs(date1).diff(date2, 'D')

  // 计算出天数
  const days = Math.floor(date3 / (24 * 3600 * 1000))
  // 计算天数后剩余毫秒数
  date3 = date3 % (24 * 3600 * 1000)
  // 计算小时数
  const hours = Math.floor(date3 / (3600 * 1000))
  // 计算小时数后剩余毫秒数
  date3 = date3 % (3600 * 1000)
  // 计算分钟数
  const minutes = Math.floor(date3 / (60 * 1000))
  // 计算分钟数后剩余毫秒数
  date3 = date3 % (60 * 1000)
  const seconds = Math.round(date3 / 1000)

  return `${days}天${hours}小时${minutes}分钟${seconds}秒`
})
